package main

import (
	"fmt"
	"sort"
)

func main() {
	a := []int{100, 20, -1, 33, 45, 29}
	fmt.Printf("%T %[1]v, len=%d, cap=%d %p\n", a, len(a), cap(a), &a[0]) // alt + shift + down 向下复制一行
	sort.Ints(a)                                                          // 就地排序      nts
	fmt.Printf("%T %[1]v, len=%d, cap=%d %p\n", a, len(a), cap(a), &a[0]) // alt + down

	b := []string{"", "123", "abc", "a", "xyz", "ABC"}
	fmt.Printf("%+v\n", b)
	sort.Strings(b)
	fmt.Printf("%+v\n", b)
	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~")

	// sort.Sort(sort.IntSlice(a)) // type IntSlice []int 扩展新方法，sort.Ints(a)
	sort.Sort(sort.Reverse(sort.IntSlice(a)))                             // 就地排序 降序
	fmt.Printf("%T %[1]v, len=%d, cap=%d %p\n", a, len(a), cap(a), &a[0]) // alt + shift + down 向下复制一行
	sort.Sort(sort.Reverse(sort.StringSlice(b)))                          // []string -> StringSlice
	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
	// 二分查找 插入点的索引
	index := sort.SearchInts(a, 5)
	fmt.Println(index)

}
